Unbreak internal DnD by using null MimeData
Regression from 67b0fcea9d748c4dd8101036cbb2c587d65f0bf7 (which
implements external DnD). QMimeData of internal DnD is never null,
it always contains internal MimeType (but empty byte array)
Change-Id: Ie12e9c3b7a3c7cebfd98064bb2fafec27c20a442
Reviewed-on: https://gerrit.libreoffice.org/68673
Tested-by: Jenkins
Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
diff --git a/vcl/inc/qt5/Qt5Tools.hxx b/vcl/inc/qt5/Qt5Tools.hxx
index 57bf947..18b4869 100644
--- a/vcl/inc/qt5/Qt5Tools.hxx
+++ b/vcl/inc/qt5/Qt5Tools.hxx
@@ -118,6 +118,8 @@
}
}
static const QString sInternalMimeType = "application/x-libreoffice-dnditem";
typedef struct _cairo_surface cairo_surface_t;
struct CairoDeleter
{
diff --git a/vcl/inc/qt5/Qt5Widget.hxx b/vcl/inc/qt5/Qt5Widget.hxx
index 731498f..3e5332b 100644
--- a/vcl/inc/qt5/Qt5Widget.hxx
+++ b/vcl/inc/qt5/Qt5Widget.hxx
@@ -66,8 +66,6 @@
void inputMethodEvent(QInputMethodEvent*) override;
QVariant inputMethodQuery(Qt::InputMethodQuery) const override;
const QString m_InternalMimeType = "application/x-libreoffice-dnditem";
public slots:
static void showTooltip(const OUString& rTip);
diff --git a/vcl/qt5/Qt5Frame.cxx b/vcl/qt5/Qt5Frame.cxx
index c687c4a..958d925 100644
--- a/vcl/qt5/Qt5Frame.cxx
+++ b/vcl/qt5/Qt5Frame.cxx
@@ -29,6 +29,7 @@
#include <Qt5Menu.hxx>
#include <Qt5DragAndDrop.hxx>
#include <QtCore/QMimeData>
#include <QtCore/QPoint>
#include <QtCore/QSize>
#include <QtGui/QIcon>
@@ -1109,7 +1110,7 @@
aEvent.SourceActions = css::datatransfer::dnd::DNDConstants::ACTION_MOVE;
css::uno::Reference<css::datatransfer::XTransferable> xTransferable;
if (pQMimeData)
if (!pQMimeData->hasFormat(sInternalMimeType))
xTransferable = new Qt5DnDTransferable(pQMimeData);
else
xTransferable = Qt5DragSource::m_ActiveDragSource->GetTransferable();
@@ -1141,7 +1142,7 @@
aEvent.SourceActions = css::datatransfer::dnd::DNDConstants::ACTION_MOVE;
css::uno::Reference<css::datatransfer::XTransferable> xTransferable;
if (pQMimeData)
if (!pQMimeData->hasFormat(sInternalMimeType))
xTransferable = new Qt5DnDTransferable(pQMimeData);
else
xTransferable = Qt5DragSource::m_ActiveDragSource->GetTransferable();
diff --git a/vcl/qt5/Qt5Widget.cxx b/vcl/qt5/Qt5Widget.cxx
index 2baf7a3..ca2c3ad 100644
--- a/vcl/qt5/Qt5Widget.cxx
+++ b/vcl/qt5/Qt5Widget.cxx
@@ -193,7 +193,7 @@
{
// internal drag source
QMimeData* mimeData = new QMimeData;
mimeData->setData(m_InternalMimeType, nullptr);
mimeData->setData(sInternalMimeType, nullptr);
QDrag* drag = new QDrag(this);
drag->setMimeData(mimeData);
@@ -202,7 +202,7 @@
void Qt5Widget::dragEnterEvent(QDragEnterEvent* event)
{
if (event->mimeData()->hasFormat(m_InternalMimeType))
if (event->mimeData()->hasFormat(sInternalMimeType))
event->accept();
else
event->acceptProposedAction();